package com.hmall.cart.domain.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 购物车表单实体 --- 包含商品id、商品标题、商品特点、商品价格、商品图片
 * 用于接收前端添加商品到购物车的请求参数
 * 包含商品基本信息和用户选择的规格信息
 */
@Data
@ApiModel(description = "新增购物车商品表单实体，用于接收添加购物车请求的参数")
public class CartFormDTO {

    /**
     * 商品ID
     * 必须字段，用于唯一标识商品
     */
    @ApiModelProperty(value = "商品ID", required = true, example = "100001")
    private Long itemId;

    /**
     * 商品标题
     * 用于购物车列表展示，避免重复查询商品服务
     */
    @ApiModelProperty(value = "商品标题", required = true, example = "华为 Mate 50 Pro")
    private String name;

    /**
     * 商品动态属性键值集
     * 格式：JSON字符串，存储用户选择的商品规格（如颜色、尺寸）
     * 示例：{"颜色":"黑色","内存":"256G"}
     */
    @ApiModelProperty(value = "商品动态属性键值集，JSON字符串格式", required = true,
            example = "{\"颜色\":\"黑色\",\"内存\":\"256G\"}")
    private String spec;

    /**
     * 商品价格（单位：分）
     * 提交时的实时价格，避免后续价格变动影响结算
     */
    @ApiModelProperty(value = "商品价格，单位为分（如10000表示100元）", required = true, example = "699900")
    private Integer price;

    /**
     * 商品图片URL
     * 用于购物车列表展示，避免重复查询商品服务
     */
    @ApiModelProperty(value = "商品主图URL", required = true,
            example = "https://example.com/images/100001.jpg")
    private String image;
}
